package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.SalaryBillFieldsAddDTO;
import org.jsola.hr.dto.SalaryBillFieldsUpdateDTO;
import org.jsola.hr.query.SalaryBillFieldsQuery;
import org.jsola.hr.vo.SalaryBillFieldsListVO;
import org.jsola.hr.vo.SalaryBillFieldsVO;

import java.util.List;

/**
 * 工资条自定义字段
 *
 * @author zhr
 */
@Api(tags = "hr-工资条自定义字段")
public interface ISalaryBillFieldsControllerAPI {

    /**
     * 新增工资条自定义字段
     * @param salaryBillFieldsAddDTO 工资条自定义字段新增实体
     * @return 工资条自定义字段展示对象
     */
    @ApiOperation(value = "新增工资条自定义字段")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsAddDTO", dataType = "SalaryBillFieldsAddDTO", value = "新增工资条自定义字段", paramType = "body")
    })
    Result<SalaryBillFieldsVO> save(SalaryBillFieldsAddDTO salaryBillFieldsAddDTO);


    /**
     * 修改工资条自定义字段
     * @param salaryBillFieldsUpdateDTO 工资条自定义字段
     * @return 更新数量
     */
    @ApiOperation(value = "修改工资条自定义字段")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsUpdateDTO", dataType = "SalaryBillFieldsUpdateDTO", value = "修改工资条自定义字段", paramType = "body")
    })
    Result<Integer> update(SalaryBillFieldsUpdateDTO salaryBillFieldsUpdateDTO);




    /**
     * 删除单个工资条自定义字段，彻底删除
     * @param salaryBillFieldsId 工资条自定义字段id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个工资条自定义字段，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsId", dataType = "String", value = "工资条自定义字段id", paramType = "path")
    })
    Result<Integer> delete(String salaryBillFieldsId);


    /**
     * 批量删除工资条自定义字段，彻底删除
     * @param salaryBillFieldsIds 工资条自定义字段id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除工资条自定义字段，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsIds", dataType = "String[]", value = "工资条自定义字段id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] salaryBillFieldsIds);


    /**
     * 根据工资条自定义字段id查询工资条自定义字段详情
     * @param salaryBillFieldsId 工资条自定义字段id
     * @return 工资条自定义字段详情
     */
    @ApiOperation(value="根据工资条自定义字段id查询工资条自定义字段详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsId", dataType = "String", value = "工资条自定义字段id", paramType = "path")
    })
    Result<SalaryBillFieldsVO> findById(String salaryBillFieldsId);


    /**
     * 查询工资条自定义字段
     * @param salaryBillFieldsQuery 工资条自定义字段查询参数
     * @return page
     */
    @ApiOperation(value="查询工资条自定义字段")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsQuery", dataType = "SalaryBillFieldsQuery", value = "工资条自定义字段查询参数", paramType = "query")
    })
    Result<List<SalaryBillFieldsListVO>> listAll(SalaryBillFieldsQuery salaryBillFieldsQuery);


     /**
     * 分页查询工资条自定义字段
     * @param salaryBillFieldsQuery 工资条自定义字段查询参数
     * @return page
     */
    @ApiOperation(value="分页查询工资条自定义字段")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "salaryBillFieldsQuery", dataType = "SalaryBillFieldsQuery", value = "工资条自定义字段查询参数", paramType = "query")
    })
    Result<Page<SalaryBillFieldsListVO>> page(SalaryBillFieldsQuery salaryBillFieldsQuery);


}

